import java.util.*;

/**
 * Created by user on 16.02.14.
 */
public class ShifrManager {
    static int smesh = (int)'a';//смещение алфавита относительно таблицы юникодов


    public static String cezarShifr(String s, int key) {
        String tmp = "";
        char c;
        for (int i = 0; i < s.length() - 1; i++) {
            c = s.charAt(i);
            c = (char) (c + key);
            tmp += c;
        }
        return tmp;
    }

    public static String cezarDeshifr(String s, int key) {
        String tmp = "";
        char c;
        for (int i = 0; i < s.length() - 1; i++) {
            c = s.charAt(i);
            c = (char) (c - key);
            tmp += c;
        }
        return tmp;
    }

    public static String viginerEncrypt(String text, String keyWord)
    {
        StringBuilder ans = new StringBuilder();
        for(int i = 0; i < text.length();i++)
        {
            int num = ((text.charAt(i) + keyWord.charAt(i % keyWord.length()) - 2 * smesh) % 26);
            //в num лежит номер буквы в алфавите
            char c = (char)(num + smesh);//получаем нужный символ
            ans.append(c);
        }
        return ans.toString();
    }
    public static String viginerDecrypt(String shifr, String keyWord)
    {
        StringBuilder ans = new StringBuilder();
        for(int i = 0; i < shifr.length();i++)
        {
            int num = ((shifr.charAt(i)  - keyWord.charAt(i % keyWord.length()) + 26) % 26);
            //обратные преобразования с номером буквы в алфавите
            char c = (char)(num + smesh);
            ans.append(c);
        }
        return ans.toString();
    }

}
